from django.core.management.base import BaseCommand
from django.utils import timezone
from datetime import timedelta
from todo.models import Category, TodoItem


class Command(BaseCommand):
    help = '创建示例数据用于演示'

    def handle(self, *args, **options):
        self.stdout.write(self.style.SUCCESS('开始创建示例数据...'))

        # 清除现有数据（可选）
        # TodoItem.objects.all().delete()
        # Category.objects.all().delete()

        # 创建科目分类
        categories_data = [
            {'name': '英语', 'color': '#e74c3c'},  # 红色
            {'name': '数学', 'color': '#3498db'},  # 蓝色
            {'name': '政治', 'color': '#e67e22'},  # 橙色
            {'name': '专业课', 'color': '#9b59b6'},  # 紫色
        ]

        categories = {}
        for cat_data in categories_data:
            category, created = Category.objects.get_or_create(
                name=cat_data['name'],
                defaults={'color': cat_data['color']}
            )
            categories[cat_data['name']] = category
            if created:
                self.stdout.write(f'创建科目: {category.name}')

        # 创建待办事项
        now = timezone.now()
        todos_data = [
            {
                'title': '背单词100个',
                'description': '使用考研词汇书，重点记忆高频词汇',
                'category': categories['英语'],
                'priority': 'high',
                'due_date': now + timedelta(days=1),
            },
            {
                'title': '做英语阅读理解3篇',
                'description': '练习真题阅读理解，注意总结解题技巧',
                'category': categories['英语'],
                'priority': 'medium',
                'due_date': now + timedelta(days=2),
            },
            {
                'title': '复习高等数学第一章',
                'description': '函数、极限、连续性相关知识点',
                'category': categories['数学'],
                'priority': 'high',
                'due_date': now + timedelta(hours=12),
            },
            {
                'title': '做数学习题20道',
                'description': '重点练习导数和积分题目',
                'category': categories['数学'],
                'priority': 'urgent',
                'due_date': now + timedelta(hours=8),
            },
            {
                'title': '背诵马原知识点',
                'description': '马克思主义基本原理概论第二章',
                'category': categories['政治'],
                'priority': 'medium',
                'due_date': now + timedelta(days=3),
            },
            {
                'title': '整理政治笔记',
                'description': '总结本周学习的政治知识点',
                'category': categories['政治'],
                'priority': 'low',
                'due_date': now + timedelta(days=7),
            },
            {
                'title': '阅读专业书籍第三章',
                'description': '认真阅读并做好笔记',
                'category': categories['专业课'],
                'priority': 'high',
                'due_date': now + timedelta(days=2),
            },
            {
                'title': '完成专业课作业',
                'description': '本周布置的课后习题',
                'category': categories['专业课'],
                'priority': 'urgent',
                'due_date': now + timedelta(hours=6),
            },
            {
                'title': '每日英语听力练习',
                'description': '听力材料：考研真题听力30分钟',
                'category': categories['英语'],
                'priority': 'medium',
                'due_date': now + timedelta(days=1),
                'is_completed': True,
            },
            {
                'title': '整理错题本',
                'description': '整理本周数学和专业课的错题',
                'category': categories['数学'],
                'priority': 'low',
                'due_date': now + timedelta(days=5),
            },
        ]

        for todo_data in todos_data:
            todo, created = TodoItem.objects.get_or_create(
                title=todo_data['title'],
                defaults=todo_data
            )
            if created:
                self.stdout.write(f'创建任务: {todo.title}')

        self.stdout.write(self.style.SUCCESS(f'\n成功创建示例数据！'))
        self.stdout.write(f'科目分类: {Category.objects.count()} 个')
        self.stdout.write(f'待办事项: {TodoItem.objects.count()} 个')
        self.stdout.write(self.style.WARNING('\n提示: 现在可以访问 http://127.0.0.1:8000 查看应用'))

